{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Otto Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第五步：调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "import math\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "dpath = './'\n",
    "train = pd.read_csv(dpath +\"FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target 分布，看看各类样本分布是否均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.Disbursed);\n",
    "pyplot.xlabel('Disbursed');\n",
    "pyplot.ylabel('Number of customers');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每类样本分布不是很均匀，所以交叉验证时也考虑各类样本按比例抽取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于电脑老旧，故取1%的数据用于完成训练测试任务，集中精力放在参数调优的学习上。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "y = train['Disbursed']\n",
    "X = train.drop(['Disbursed'], axis=1)\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.99,random_state=4)\n",
    "\n",
    "# drop ids and get labels\n",
    "y_train = y_train\n",
    "X_train = X_train.drop(['ID','DOB','LoggedIn','Unnamed: 26'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二轮参数调整得到的n_estimators最优值（65），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用交叉验证评价模型性能时，用scoring参数定义评价指标。评价指标是越高越好，因此用一些损失函数当评价指标时，需要再加负号，如neg_log_loss，neg_mean_squared_error 详见sklearn文档：http://scikit-learn.org/stable/modules/model_evaluation.html#log-loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [0.001, 0.01, 0.05, 0.1, 1, 1.5, 2],\n",
       " 'reg_lambda': [0.1, 0.5, 1, 1.5, 2]}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [1e-3,0.01,0.05,0.1,1,1.5,2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.1, 0.5, 1, 1.5, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/model_selection/_search.py:762: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.08013, std: 0.01537, params: {'reg_alpha': 0.001, 'reg_lambda': 0.1},\n",
       "  mean: -0.07772, std: 0.01648, params: {'reg_alpha': 0.001, 'reg_lambda': 0.5},\n",
       "  mean: -0.07192, std: 0.01344, params: {'reg_alpha': 0.001, 'reg_lambda': 1},\n",
       "  mean: -0.07586, std: 0.01118, params: {'reg_alpha': 0.001, 'reg_lambda': 1.5},\n",
       "  mean: -0.07632, std: 0.01216, params: {'reg_alpha': 0.001, 'reg_lambda': 2},\n",
       "  mean: -0.07979, std: 0.01612, params: {'reg_alpha': 0.01, 'reg_lambda': 0.1},\n",
       "  mean: -0.07621, std: 0.01671, params: {'reg_alpha': 0.01, 'reg_lambda': 0.5},\n",
       "  mean: -0.07096, std: 0.01288, params: {'reg_alpha': 0.01, 'reg_lambda': 1},\n",
       "  mean: -0.07549, std: 0.01071, params: {'reg_alpha': 0.01, 'reg_lambda': 1.5},\n",
       "  mean: -0.07625, std: 0.01289, params: {'reg_alpha': 0.01, 'reg_lambda': 2},\n",
       "  mean: -0.07976, std: 0.01631, params: {'reg_alpha': 0.05, 'reg_lambda': 0.1},\n",
       "  mean: -0.07644, std: 0.01645, params: {'reg_alpha': 0.05, 'reg_lambda': 0.5},\n",
       "  mean: -0.07338, std: 0.01267, params: {'reg_alpha': 0.05, 'reg_lambda': 1},\n",
       "  mean: -0.07528, std: 0.01268, params: {'reg_alpha': 0.05, 'reg_lambda': 1.5},\n",
       "  mean: -0.07654, std: 0.01286, params: {'reg_alpha': 0.05, 'reg_lambda': 2},\n",
       "  mean: -0.08055, std: 0.01926, params: {'reg_alpha': 0.1, 'reg_lambda': 0.1},\n",
       "  mean: -0.07667, std: 0.01462, params: {'reg_alpha': 0.1, 'reg_lambda': 0.5},\n",
       "  mean: -0.07432, std: 0.01269, params: {'reg_alpha': 0.1, 'reg_lambda': 1},\n",
       "  mean: -0.07689, std: 0.01184, params: {'reg_alpha': 0.1, 'reg_lambda': 1.5},\n",
       "  mean: -0.07637, std: 0.01189, params: {'reg_alpha': 0.1, 'reg_lambda': 2},\n",
       "  mean: -0.07622, std: 0.01300, params: {'reg_alpha': 1, 'reg_lambda': 0.1},\n",
       "  mean: -0.07663, std: 0.01069, params: {'reg_alpha': 1, 'reg_lambda': 0.5},\n",
       "  mean: -0.07606, std: 0.01261, params: {'reg_alpha': 1, 'reg_lambda': 1},\n",
       "  mean: -0.07628, std: 0.01100, params: {'reg_alpha': 1, 'reg_lambda': 1.5},\n",
       "  mean: -0.07678, std: 0.00826, params: {'reg_alpha': 1, 'reg_lambda': 2},\n",
       "  mean: -0.07457, std: 0.01174, params: {'reg_alpha': 1.5, 'reg_lambda': 0.1},\n",
       "  mean: -0.07710, std: 0.01158, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.07706, std: 0.00934, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.07656, std: 0.00816, params: {'reg_alpha': 1.5, 'reg_lambda': 1.5},\n",
       "  mean: -0.07818, std: 0.00839, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.07573, std: 0.00794, params: {'reg_alpha': 2, 'reg_lambda': 0.1},\n",
       "  mean: -0.07764, std: 0.00884, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.07734, std: 0.00733, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.07782, std: 0.00636, params: {'reg_alpha': 2, 'reg_lambda': 1.5},\n",
       "  mean: -0.07839, std: 0.00669, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 0.01, 'reg_lambda': 1},\n",
       " -0.07096072619877242)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=65,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=4,\n",
    "        min_child_weight=0.4,\n",
    "        gamma=0,\n",
    "        subsample=0.6,\n",
    "        colsample_bytree=1.0,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'binary:logistic',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.18183441, 0.13136616, 0.11876078, 0.11657925, 0.12239842,\n",
       "        0.12736402, 0.12096663, 0.11878195, 0.11738877, 0.11876826,\n",
       "        0.12274766, 0.11919775, 0.11768684, 0.11663361, 0.11547098,\n",
       "        0.1209218 , 0.12139144, 0.11673617, 0.11590943, 0.11625047,\n",
       "        0.11541786, 0.11655207, 0.11703525, 0.11493244, 0.12102723,\n",
       "        0.15216455, 0.17362242, 0.19718456, 0.15314465, 0.18532338,\n",
       "        0.12521677, 0.13779597, 0.16931629, 0.15843272, 0.13790751]),\n",
       " 'std_fit_time': array([0.04980908, 0.0187112 , 0.00307554, 0.00353875, 0.01253992,\n",
       "        0.00662895, 0.00335602, 0.00349645, 0.00373692, 0.00247152,\n",
       "        0.00306754, 0.0036788 , 0.00411051, 0.00305313, 0.00337481,\n",
       "        0.00244681, 0.00410633, 0.0030609 , 0.00354135, 0.00387739,\n",
       "        0.00290863, 0.00245067, 0.00126786, 0.00258227, 0.01381151,\n",
       "        0.05071054, 0.04456713, 0.0544138 , 0.03899768, 0.03236416,\n",
       "        0.01438688, 0.02053351, 0.04138687, 0.03126102, 0.02557753]),\n",
       " 'mean_score_time': array([0.00957055, 0.00486035, 0.00492539, 0.00476937, 0.00481086,\n",
       "        0.0047502 , 0.00485697, 0.00472245, 0.00481267, 0.00485582,\n",
       "        0.00475564, 0.00472012, 0.00467348, 0.00466223, 0.00469809,\n",
       "        0.00471644, 0.00474982, 0.00467305, 0.00463743, 0.00460706,\n",
       "        0.00463843, 0.00465493, 0.0047008 , 0.00470219, 0.00653715,\n",
       "        0.00691199, 0.00472078, 0.00474434, 0.0072082 , 0.00717936,\n",
       "        0.00494323, 0.00494771, 0.01055546, 0.0053884 , 0.00489335]),\n",
       " 'std_score_time': array([5.03384127e-03, 1.17125359e-04, 2.77500652e-04, 1.62803156e-04,\n",
       "        1.30938685e-04, 1.64963605e-05, 3.14893981e-04, 5.20088367e-05,\n",
       "        1.84788359e-04, 2.99851509e-04, 7.93209117e-05, 2.98564800e-05,\n",
       "        7.59261924e-05, 5.89621052e-05, 9.33190420e-05, 6.44992368e-05,\n",
       "        7.60685153e-05, 5.53195637e-05, 7.58968989e-05, 8.99103743e-05,\n",
       "        3.47676095e-05, 1.32530144e-04, 4.62371267e-05, 1.53720615e-04,\n",
       "        3.63160565e-03, 4.44581593e-03, 9.05106263e-05, 1.82483867e-04,\n",
       "        4.85921211e-03, 4.64282024e-03, 2.04991046e-04, 2.12894596e-04,\n",
       "        4.97927204e-03, 4.77001796e-04, 7.92624643e-04]),\n",
       " 'param_reg_alpha': masked_array(data=[0.001, 0.001, 0.001, 0.001, 0.001, 0.01, 0.01, 0.01,\n",
       "                    0.01, 0.01, 0.05, 0.05, 0.05, 0.05, 0.05, 0.1, 0.1,\n",
       "                    0.1, 0.1, 0.1, 1, 1, 1, 1, 1, 1.5, 1.5, 1.5, 1.5, 1.5,\n",
       "                    2, 2, 2, 2, 2],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_reg_lambda': masked_array(data=[0.1, 0.5, 1, 1.5, 2, 0.1, 0.5, 1, 1.5, 2, 0.1, 0.5, 1,\n",
       "                    1.5, 2, 0.1, 0.5, 1, 1.5, 2, 0.1, 0.5, 1, 1.5, 2, 0.1,\n",
       "                    0.5, 1, 1.5, 2, 0.1, 0.5, 1, 1.5, 2],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'reg_alpha': 0.001, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 1, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 1, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 1, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " 'split0_test_score': array([-0.07012941, -0.06706678, -0.0626494 , -0.07082375, -0.07026811,\n",
       "        -0.06612151, -0.06745829, -0.06206572, -0.07082217, -0.07034113,\n",
       "        -0.06873395, -0.06082335, -0.06336243, -0.06872668, -0.07037155,\n",
       "        -0.06157506, -0.06924349, -0.06286489, -0.07054454, -0.07143253,\n",
       "        -0.06959969, -0.07262523, -0.07551571, -0.07690382, -0.08038671,\n",
       "        -0.06743514, -0.07504198, -0.07446341, -0.07621761, -0.07917528,\n",
       "        -0.0742063 , -0.07722863, -0.07669709, -0.07940194, -0.08089612]),\n",
       " 'split1_test_score': array([-0.09867503, -0.09790092, -0.09134491, -0.09136131, -0.0944883 ,\n",
       "        -0.10277618, -0.09788798, -0.08999981, -0.08980152, -0.09445981,\n",
       "        -0.10224154, -0.0928183 , -0.09021957, -0.09268523, -0.09509703,\n",
       "        -0.10597113, -0.09535353, -0.09171521, -0.0915365 , -0.09540746,\n",
       "        -0.09506118, -0.09305971, -0.09527165, -0.09389749, -0.08672782,\n",
       "        -0.09326   , -0.09660166, -0.09228237, -0.08755874, -0.09112635,\n",
       "        -0.0872178 , -0.09213416, -0.08761339, -0.08547979, -0.08704502]),\n",
       " 'split2_test_score': array([-0.07969172, -0.08791602, -0.06707389, -0.07779354, -0.07553449,\n",
       "        -0.08067654, -0.08246238, -0.06653203, -0.07775369, -0.07550412,\n",
       "        -0.07943348, -0.08517415, -0.07790637, -0.0705503 , -0.07547698,\n",
       "        -0.08529135, -0.08252002, -0.07827256, -0.07863841, -0.07589134,\n",
       "        -0.08012725, -0.07449753, -0.0756072 , -0.07265914, -0.07414691,\n",
       "        -0.07500454, -0.07386582, -0.07557986, -0.07555388, -0.07511854,\n",
       "        -0.07584626, -0.07716532, -0.07895502, -0.07813477, -0.07773786]),\n",
       " 'split3_test_score': array([-0.0948078 , -0.08422185, -0.08344027, -0.08139462, -0.08303381,\n",
       "        -0.09095666, -0.08421358, -0.08133698, -0.08112047, -0.08449114,\n",
       "        -0.09206601, -0.09062129, -0.08059582, -0.08663035, -0.08460874,\n",
       "        -0.09448378, -0.08358975, -0.08174262, -0.08583199, -0.08013151,\n",
       "        -0.08035179, -0.0820961 , -0.07823764, -0.07820875, -0.08025466,\n",
       "        -0.07894544, -0.07925267, -0.07962327, -0.08074069, -0.08024711,\n",
       "        -0.07868716, -0.0773918 , -0.0785927 , -0.07987499, -0.07968404]),\n",
       " 'split4_test_score': array([-0.05727434, -0.05142617, -0.05506168, -0.05784288, -0.05822591,\n",
       "        -0.05839378, -0.0488973 , -0.0548275 , -0.05787292, -0.05636803,\n",
       "        -0.05626609, -0.05269776, -0.0547733 , -0.05776047, -0.05707532,\n",
       "        -0.05541694, -0.05254707, -0.05697842, -0.05782781, -0.05889759,\n",
       "        -0.05586711, -0.06080225, -0.05555589, -0.0596403 , -0.06228248,\n",
       "        -0.05816354, -0.06065653, -0.06330636, -0.06265648, -0.06516766,\n",
       "        -0.06261222, -0.06420286, -0.06476187, -0.06612686, -0.06652896]),\n",
       " 'mean_test_score': array([-0.08013043, -0.07772432, -0.07192275, -0.07585814, -0.07632396,\n",
       "        -0.07979382, -0.07620524, -0.07096073, -0.07548904, -0.07624891,\n",
       "        -0.07976255, -0.07643631, -0.07338137, -0.07528321, -0.07654121,\n",
       "        -0.08055473, -0.07666996, -0.0743215 , -0.07689047, -0.0763665 ,\n",
       "        -0.07621719, -0.07662975, -0.07606056, -0.07628174, -0.07678053,\n",
       "        -0.07457239, -0.07710026, -0.07706388, -0.07656107, -0.07818309,\n",
       "        -0.07572727, -0.07763953, -0.07733773, -0.07781893, -0.07839491]),\n",
       " 'std_test_score': array([0.01535913, 0.01646231, 0.0134353 , 0.01116174, 0.01215014,\n",
       "        0.01610536, 0.0166842 , 0.01286956, 0.01069708, 0.01287017,\n",
       "        0.01629741, 0.01644006, 0.01265919, 0.0126689 , 0.01284961,\n",
       "        0.01925109, 0.01459604, 0.01268296, 0.01182634, 0.0118731 ,\n",
       "        0.01298667, 0.01067304, 0.01258837, 0.01098077, 0.00824644,\n",
       "        0.01172581, 0.01156289, 0.009331  , 0.00814589, 0.00837374,\n",
       "        0.00792654, 0.0088324 , 0.00731349, 0.00634752, 0.00668134]),\n",
       " 'rank_test_score': array([34, 28,  2,  9, 15, 33, 11,  1,  7, 13, 32, 17,  3,  6, 18, 35, 21,\n",
       "         4, 23, 16, 12, 20, 10, 14, 22,  5, 25, 24, 19, 30,  8, 27, 26, 29,\n",
       "        31], dtype=int32),\n",
       " 'split0_train_score': array([-0.01054753, -0.01584399, -0.02213947, -0.02745236, -0.0308414 ,\n",
       "        -0.01103747, -0.0157448 , -0.02233701, -0.02755243, -0.03093042,\n",
       "        -0.01146836, -0.01649903, -0.02296858, -0.02677354, -0.03154977,\n",
       "        -0.01200973, -0.01884315, -0.02349922, -0.02729123, -0.03219632,\n",
       "        -0.02747569, -0.03149128, -0.0360534 , -0.03939708, -0.04388346,\n",
       "        -0.0348282 , -0.03883139, -0.04100609, -0.04359313, -0.04624418,\n",
       "        -0.04100987, -0.04663556, -0.04817841, -0.04804592, -0.05171754]),\n",
       " 'split1_train_score': array([-0.01037639, -0.01431034, -0.01858925, -0.02280273, -0.02659028,\n",
       "        -0.01080485, -0.01442443, -0.01861605, -0.02292583, -0.02668683,\n",
       "        -0.01162822, -0.0161183 , -0.0189235 , -0.02364319, -0.02704214,\n",
       "        -0.01161388, -0.01637985, -0.01947688, -0.02433465, -0.02742205,\n",
       "        -0.02570581, -0.02915508, -0.03216471, -0.03530568, -0.03947011,\n",
       "        -0.0311794 , -0.03524745, -0.04040891, -0.04274289, -0.04562542,\n",
       "        -0.0379886 , -0.04022079, -0.04450098, -0.04709628, -0.04853268]),\n",
       " 'split2_train_score': array([-0.01107704, -0.0154107 , -0.02081988, -0.02545092, -0.03014897,\n",
       "        -0.01121785, -0.01512935, -0.02100325, -0.0255523 , -0.03024635,\n",
       "        -0.01172599, -0.01541656, -0.02093303, -0.02516007, -0.03025755,\n",
       "        -0.01238988, -0.01680374, -0.0218634 , -0.02659864, -0.03075963,\n",
       "        -0.0264976 , -0.03226504, -0.03741653, -0.0382666 , -0.04157127,\n",
       "        -0.03246257, -0.03757154, -0.04175206, -0.04391599, -0.04562994,\n",
       "        -0.03943782, -0.04330435, -0.04790458, -0.04999159, -0.05087863]),\n",
       " 'split3_train_score': array([-0.01057143, -0.01612592, -0.0208614 , -0.02536715, -0.0275925 ,\n",
       "        -0.0105329 , -0.01629057, -0.02096699, -0.02558664, -0.02777479,\n",
       "        -0.01103515, -0.01597359, -0.02117688, -0.02358225, -0.0282041 ,\n",
       "        -0.01156315, -0.01581989, -0.02246888, -0.02416843, -0.02763785,\n",
       "        -0.02383851, -0.02892825, -0.03177071, -0.03464211, -0.03778036,\n",
       "        -0.03362651, -0.03516507, -0.03819393, -0.04100064, -0.04327423,\n",
       "        -0.04052418, -0.04202414, -0.0447433 , -0.04667114, -0.05009405]),\n",
       " 'split4_train_score': array([-0.01086391, -0.01493795, -0.01957803, -0.02509331, -0.02881041,\n",
       "        -0.01086575, -0.0151698 , -0.01952581, -0.02520304, -0.02814244,\n",
       "        -0.01126491, -0.01558535, -0.02057577, -0.02567884, -0.02880078,\n",
       "        -0.01182601, -0.01607356, -0.02442232, -0.0266076 , -0.02977413,\n",
       "        -0.02608468, -0.031051  , -0.0359425 , -0.03925827, -0.04194421,\n",
       "        -0.03456835, -0.03786573, -0.04118845, -0.04477682, -0.04742395,\n",
       "        -0.03998094, -0.04225622, -0.04714069, -0.05008118, -0.0514898 ]),\n",
       " 'mean_train_score': array([-0.01068726, -0.01532578, -0.02039761, -0.02523329, -0.02879671,\n",
       "        -0.01089176, -0.01535179, -0.02048982, -0.02536405, -0.02875617,\n",
       "        -0.01142453, -0.01591857, -0.02091555, -0.02496758, -0.02917087,\n",
       "        -0.01188053, -0.01678404, -0.02234614, -0.02580011, -0.029558  ,\n",
       "        -0.02592046, -0.03057813, -0.03466957, -0.03737395, -0.04092988,\n",
       "        -0.03333301, -0.03693624, -0.04050989, -0.04320589, -0.04563954,\n",
       "        -0.03978828, -0.04288821, -0.04649359, -0.04837722, -0.05054254]),\n",
       " 'std_train_score': array([0.00025009, 0.00064769, 0.00121403, 0.00147762, 0.00157023,\n",
       "        0.00023003, 0.00062903, 0.0012918 , 0.00147274, 0.00158555,\n",
       "        0.00024955, 0.00038546, 0.00129362, 0.00122291, 0.00157754,\n",
       "        0.00030031, 0.00108056, 0.00168053, 0.0012902 , 0.0018276 ,\n",
       "        0.00119661, 0.00131532, 0.00226975, 0.00200904, 0.00210781,\n",
       "        0.00135967, 0.00147297, 0.00123479, 0.00128059, 0.00135238,\n",
       "        0.00104236, 0.00212024, 0.00156731, 0.00142625, 0.00115165])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.070961 using {'reg_alpha': 0.01, 'reg_lambda': 1}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_lambda' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳值：'reg_alpha': 0.01, 'reg_lambda': 1"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
